﻿using Polaris.Domain.Model.Dto.Tag.Request;
using Polaris.Domain.Model.Dto.Tag.Response;
using Polaris.Domain.Model.Entity.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Polaris.Domain.Interfaces.Admin
{
    public interface ITag
    {
        /// <summary>
        /// 创建标签
        /// </summary>
        /// <param name="createTagInfo"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task CreateTag(CreateTagInfoRequest createTagInfo, Guid? userId);

        /// <summary>
        /// 删除标签
        /// </summary>
        /// <param name="id"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task DeleteTag(string id, Guid? userId);

        /// <summary>
        /// 修改标签
        /// </summary>
        /// <param name="update"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task UpdateTag(UpdateTagInfoRequest update, Guid? userId);

        /// <summary>
        /// 获取标签列表
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        Task<PaginationInfo<TagInfoResponse>> GetTagList(QueryTagRequest query);

        /// <summary>
        /// 根据id获取标签数据
        /// </summary>
        Task<TagInfoResponse> GetTagById(string id);

        /// <summary>
        /// 根据字典code来获取标签类型数据
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        Task<List<TagOptionResponse>> GetTagByType(string type);
    }
}
